namespace AndyPike.Unfuddle.Contracts
{
    /// <summary>
    /// Provides an interface for Unfuddle find commands that query and return data from the Unfuddle servers
    /// </summary>
    /// <typeparam name="T">The type to return from the execution of this command</typeparam>
    public interface IUnfuddleFindCommand<T>
    {
        /// <summary>
        /// Executes the command using the provided Unfuddle service
        /// </summary>
        /// <param name="service">The Unfuddle service that should be used to execute the command</param>
        /// <returns>Returns the result of the command (type T)</returns>
        T Execute(IUnfuddleService service);
    }
}